分支限界(Branch and Bound )算法

分支定界 (branch and bound) 算法

是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法中,每一个活结点只有一次机会成为扩展结点。
除少数整数规划可以用线性规划的单纯形法直接求解外,一般整数规划必需寻找新的求解方法。这里我们介绍全整数规划的分枝定界方法,它也可以用于求解混合整数规划问题和0-1规划问题。下面我们从一个例子出发来讨论它的思路和步骤。

例1 解下面的整数规划问题

![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUwNTIyMTAzMDU3Mjc0?x-oss-process=image/format,png)
解: >(1)首先我们注意到问题(4.3)的可行解集为图4-2的阴影部分内的整数格子点组成的集合,暂时不考虑整数限制条件(5)。解相应的线性规划(1)~(4),即(4.3)的松弛问题:
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUwNTIyMTAzMjAyMDQy?x-oss-process=image/format,png)
用线性规划的方式得到如下的图案
![图 4-2](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUwNTIyMTAzMTQ5NjI0?x-oss-process=image/format,png)
得最优解
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUwNTIyMTAzMzM2NDUz?x-oss-process=image/format,png)
由(1)和(5)可知ILP的最优解![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUwNTIyMTAzNjIxMzgx?x-oss-process=image/format,png),且必为整数,从而可以断言 ![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUwNTIyMTAzNjQ0MjM1?x-oss-process=image/format,png)。这一过程称为定界,即给出ILP0问题目标函数最优解z*的下界和上界。 >(2)其次我们注意到线性规划(4.4)的解$x_1=2.25,x_2=3.75$具有小数,但这两个变量在(4.3)中都必须是整数,那就是说必须把小数部分__划掉__。我们注意到,对$x_2$,最终的最优解不会在3和4之间取值,亦即必然有: >$$ \left. \begin{array}{l} max\ z = 5x_1+8x_2\\ \begin{cases} 5x_1+9x_2 \leq 45\\ x_1+x_2 \leq 6\\ x_2 \leq 3\\ x1,x2 \geq 0 \end{cases} \end{array} \right\} =ILP1 $$ >$$ \left. \begin{array}{l} max\ z = 5x_1+8x_2\\ \begin{cases} 5x_1+9x_2 \leq 45\\ x_1+x_2 \leq 6\\ x_2 \geq 4\\ x1,x2 \geq 0 \end{cases} \end{array} \right\} =ILP2 \tag{4.5} $$ > >这种表达式实际上是将$x_2$在3和4间的小数部分划掉了,把可行域分成了$x_2\leq 3$和$x_2\geq 4$ ,显然这种分法把原来线性规划的解A点**(2.25,3.75)**排除出去了。但没有排除任何整数可行解。这一过程称为**分枝**,即用两个矛盾的约束条件(4.5)分别代入原问题(4.3)形成两个子问题ILP1和ILP2。

解ILP1的松弛问题ILP1得到
( x 1 , x 2 ) = ( 3 , 3 ) , z m a x = 39 (x_1, x_2)=(3, 3), z_{max} = 39 (x1,x2)=(3,3),zmax=39
解ILP2的松弛问题ILP2得到
( x 1 , x 2 ) = ( 1.8 , 4 ) , z m a x = 41 (x_1, x_2)=(1.8, 4), z_{max} = 41 (x1,x2)=(1.8,4),zmax=41
(3)修改上下界:从LP1和LP2的解我们知道有 39 ≤ z ∗ ≤ 41 39\leq z^*\leq 41 39z41
(4)再分枝:
下面我们就是要划掉LP2的解中 x 1 x_1 x1的小数部分,增加约束 x 1 ≤ 1 x_1\leq 1 x11 x 1 ≥ 2 x_1\geq 2 x12对ILP2进一步的分枝,即
m a x   z = 5 x 1 + 8 x 2 { 5 x 1 + 9 x 2 ≤ 45 x 1 + x 2 ≤ 6 x 2 ≥ 4 x 1 ≤ 1 x 1 , x 2 ≥ 0 } = I L P 3 \left. \begin{array}{l} max\ z = 5x_1+8x_2\\ \begin{cases} 5x_1+9x_2 \leq 45\\ x_1+x_2 \leq 6\\ x_2 \geq 4\\ x_1 \leq 1\\ x1,x2 \geq 0 \end{cases} \end{array} \right\} =ILP3 max z=5x1+8x25x1+9x245x1+x26

  • 20
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值